package thread;

/**
 * 调用 wait方法,就会陷入阻塞  , 直到其他线程通过 notify 来通知 ~
 * wait方法 notify 都是针对同一个对象
 */
public class TestDemo17 {
    public static void main(String[] args) throws InterruptedException {
        Object object = new Object();
        synchronized(object){
            System.out.println("wait 前");
            object.wait();// 就会释放锁,等待其他线程通知,再重新获取锁,不然就会一直等待
            System.out.println("wait 后");
        }
    }

    public static void main1(String[] args) throws InterruptedException {
        Object object = new Object();
        System.out.println("wait 前");

        object.wait();

        System.out.println("wait 后");
        // 这里没拿到锁,就没有释放,抛出异常
        // wait 做的事:
        // 1.先释放锁
        // 2.等待其他线程的通知
        // 3.收到通知后,重新获取锁,继续执行

    }
}
